package Es

import (
	"context"
	"deepgox-go-admin/Settings"
	"github.com/olivere/elastic/v7"
)

// ESClient 声明一个全局的ESClient变量
var (
	ESClient *elastic.Client
)

func Init(cfg *Settings.EsConfig) (err error) {
	ESClient, err = elastic.NewClient(
		// 允许指定弹性是否应该定期检查集群，默认为 true, 会把请求 http://ip:port/_nodes/http，并将其返回的 publish_address 作为请求路径
		elastic.SetSniff(false),
		elastic.SetURL(cfg.EsUrl...), // 服务地址
		elastic.SetBasicAuth("", ""), // 设置认证账号和密码
		// elastic.SetHealthcheckInterval(time.Second*5), // 心跳检查，间隔时间
		// elastic.SetGzip(true),                         // 启用 gzip 压缩
	)
	if err != nil {
		panic(err)
	}
	// Ping the Elasticsearch server to get e.g. the version number
	_, _, err = ESClient.Ping(cfg.EsUrl[0]).Do(context.Background())
	return
}
